using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;

namespace SCSFContrib.CompositeUI.WPF
{
	/// <summary>
	/// Provides a means by which the <see cref="ApplicationShellApplication{TWorkItem, TShell}"/> class can initialize applications prior to
	/// running them.
	/// </summary>
	/// <remarks>
	/// <para>
	/// This interface exists to allow the <see cref="ApplicationShellApplication{TWorkItem, TShell}"/> to initialize <see cref="Application"/>s
	/// without resorting to reflectively invoking their <c>InitializeComponent</c> method. The <see cref="Application"/> class itself does not
	/// define an <c>InitializeComponent</c> method, but compiler-generated subclasses of <see cref="Application"/> do. This interface must be
	/// added to the implementation list of any such <see cref="Application"/> subclasses before they are used by the
	/// <see cref="ApplicationShellApplication{TWorkItem, TShell}"/> class.
	/// </para>
	/// </remarks>
	public interface IInitializeApplication
	{
		/// <summary>
		/// Called to initialize the application.
		/// </summary>
		void InitializeComponent();
	}
}
